/**
 * 消息提示框
 */
var taskMsg = function(box, options) {
	this.box = this.g(box);
	this.setOptions(options);
	this.init();
}

taskMsg.prototype = {
	ae : function(e, call) {
		if (window.addEventListener)
			window.addEventListener(e, call, false);
		else
			window.attachEvent("on" + e, call);
	},
	g : function(id) {
		return typeof (id) == "string" ? document.getElementById(id) : id;
	},
	isFixed : !window.ActiveXObject || (navigator.userAgent.indexOf("MSIE 6") == -1 && document.compatMode == "CSS1Compat"),
	setOptions : function(options) {
		this.options = {// 默认配置
			showDelay : 0,// 显示延时
			autoHide : 30,// 自动隐藏时间，设置为0时，不自动隐藏
			onShow : function() {
			},// 显示后调用
			onHide : function() {
			}// 隐藏后调用
		};
		for ( var o in options) {
			this.options[o] = options[o];
		}
	},
	// 隐藏
	hide : function() {
		var _top = this.box.clientHeight;
		var o = this;
		if (/ing$/.test(o.status))
			return;
		o.status = "hiding";
		clearTimeout(o.tt);
		o.t = setInterval(function() {

			_top -= 20;

			if (o.isFixed)
				o.box.style.bottom = (-o.box.clientHeight + (_top)) + 'px';
			else
				o.box.style.top = o.de.scrollTop + o.de.clientHeight - 5 - (_top) + "px";
			if (_top <= -5) {
				clearInterval(o.t);
				o.status = "hide";
				o.box.style.display = "none";
				o.options.onHide();
			}
		}, 20);
	},
	// 显示
	show : function() {
		var _top = 0;
		var o = this;
		if (/ing$/.test(o.status))
			return;
		o.status = "showing";
		clearTimeout(o.tt);
		o.box.style.display = "block";

		o.t = setInterval(function() {

			if (_top >= o.box.clientHeight) {
				_top = o.box.clientHeight;
				if (o.isFixed)
					o.box.style.bottom = (-o.box.clientHeight + (_top) - 5) + "px";
				else
					o.box.style.top = (o.de.scrollTop + o.de.clientHeight - 5 - (_top)) + "px";
				
				clearInterval(o.t);
				o.status = "show";
				o.options.onShow();
				var h = o.options.autoHide - 0;
				if (h)
					o.tt = setTimeout(function() {
						o.hide();
					}, h * 1000);
			} else {
				_top += 20;
				if (o.isFixed)
					o.box.style.bottom = (-o.box.clientHeight + (_top)) + "px";
				else
					o.box.style.top = (o.de.scrollTop + o.de.clientHeight - 5 - (_top)) + "px";
			}
		}, 20);
	},
	fixIE6 : function() {// IE6 滚动定位
		this.box.style.left = this.de.scrollLeft + this.de.clientWidth - this.box.clientWidth - 2 + "px";
		if (this.status == "show") {
			this.box.style.top = this.de.scrollTop + this.de.clientHeight - this.box.clientHeight - 5 + "px";
		} else if (this.status == "hide") {
			this.box.style.top = this.de.scrollTop + this.de.clientHeight + 5 + "px";
		}
	},
	init : function() {
		with (this.box.style) {
			display = "block";// 显示之后才能取出宽度和高度
			if (this.isFixed) {
				position = "fixed";
				right = "2px";
				bottom = (-this.box.clientHeight - 5) + "px";
			} else {
				position = "absolute";
			}
		}
		
		this.status = "hide";
		var o = this;
		
		if (!this.isFixed) {
			o.de = document.compatMode == "CSS1Compat" ? document.documentElement : document.body;
			var timer;
			this.ae("resize", function() {
				clearTimeout(timer);
				timer = setTimeout(function() {
					o.fixIE6.call(o)
				}, 30);
			});
			this.ae("scroll", function() {
				clearTimeout(timer);
				timer = setTimeout(function() {
					o.fixIE6.call(o)
				}, 30);
			});
			this.fixIE6();// 加载时指定位置
		}
		o.box.style.display = "none";
		
		/**
		o.tt = setTimeout(function() {
			o.show();
		}, o.options.showDelay * 1000);
		*/
	}
}